﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using LayerData.Ventas;
using LayerEntity.Ventas;
using LayerData;
using LayerEntity.Caja;
using System.Data;
using LayerEntity.Sistema;
using LayerEntity.Creditos;
namespace LayerLogic.Ventas
{
  public  class LFacturacion
    {

        #region Variables
        public delegate void AddObject(string msj, EnumOperaciones op, EnumEstadoOperaciones est);
        public event AddObject UpdateList = delegate { };
        readonly IPostgreSqlConnectionInfo connectionInfo;
        readonly DFacturacion common;
        #endregion      
        #region Constructores
        public LFacturacion()
        {
            this.InicializaVariables();
            this.connectionInfo = ObjectFactory.CreateConnectionInfo();
            this.common = new DFacturacion(this.connectionInfo);
        }

        public LFacturacion(IPostgreSqlConnectionInfo connection)
        {
            this.InicializaVariables();
            this.connectionInfo = connection;
            this.common = new DFacturacion(connection);
        }
        #endregion
        #region Metodos Privados
        private void InicializaVariables()
        {
            //this.listarListaPrecios = new List<EListaPrecios>();
         //   this.listarGrupos = new List<EGrupo>();
        }

        #endregion
        #region Mantenimientos
        public object[] MantenimientoGrabarFacturacion(EFacturacion Fact, 
            EDetFacturacion DFact, 
            EMovientoCaja Emov,
            ECreditos Ecred,
            EnumOperaciones op)
        {
           /* try
            {*/
                return common.MantenimientoGrabarFacturacion(Fact, DFact, Emov, Ecred, (LayerData.EnumOperaciones)((int)op));
           /* }
            catch (Exception ex)
            {
                throw ex;
            }*/
        }
        #endregion

        #region Consultas
        public DataTable GetCabeceraFacturacion(ESistema obj)
        {
            return common.GetCabeceraFacturacion(obj);
        }
        public DataTable GetCabeceraFacturacionVentas(ESistema obj)
        {
            return common.GetCabeceraFacturacionVentas(obj);
        }
        public DataTable GetDetaFacturacionVentas(ESistema obj)
        {
            return common.GetDetaFacturacionVentas(obj);
        }
        #endregion
    }
}
